import pygame

# 动画实现原理：图片快速连续播放
# Frame帧：每个画面，对应每个update方法，每秒绘制60次才可以达到非常连续高品质的动画效果
pygame.init()
# 创建游戏窗口
screen = pygame.display.set_mode((480, 700))
# 绘制背景
bg = pygame.image.load("images/background.png")
screen.blit(bg, (0, 0))
# 绘制飞机
hero = pygame.image.load("images/me1.png")
screen.blit(hero, (100, 500))

pygame.display.update()
"""
游戏中两个重要组成部分：
1.游戏初始化：设置游戏窗口->绘制图像初始位置->设置游戏时钟
2.游戏循环：设置刷新频率->检测用户交互->更新所有图像位置->更新屏幕显示
"""
# 游戏循环->意味着游戏正式开始，之前的绘制都是游戏初始化阶段
# python默认循环速度太快，而我们要求每秒60帧就足够，此时可以使用时钟对象设置屏幕绘制速度
# 创建时钟对象
clock = pygame.time.Clock()
i = 0
# 定义飞机的位置
rect = pygame.Rect(100, 500, 102, 126)
while True:
    # 设置刷新频率，指定循环体内部代码执行频率
    clock.tick(60)
    print(i)
    i += 1
    # 飞机动起来后会在屏幕中留下残影，重绘背景遮挡住飞机残影
    screen.blit(bg, (0, 0))
    # 让飞机y坐标不断减小并重复绘制飞机让飞机动起来
    rect.y -= 5
    # 如果飞机飞出屏幕则从底部重新飞入
    if rect.y <= - rect.height:
        rect.y = 700
    screen.blit(hero, rect)
    pygame.display.update()
    pass
pygame.quit()
